package reports

import (
	"yundian/internel/pkg/dingo"
)

// report Model
type ReportsModel struct {
	Id        int    `gorm:"column:id" json:"id"`
	MemberId  int    `gorm:"column:member_id" json:"memberId"`   // 会员ID
	Phone     string `gorm:"column:phone" json:"phone"`          // 联系方式
	Address   string `gorm:"column:address" json:"address"`      // 地址 用户填写的地址
	ShareMode string `gorm:"column:share_mode" json:"shareMode"` // 共享模式  pcl密码线 cdb充电宝
	DeviceSn  string `gorm:"column:device_sn" json:"deviceSn"`   // 设备标识SN
	TradeNo   string `gorm:"column:trade_no" json:"tradeNo"`     // 订单号
	ImgPaths  string `gorm:"column:img_paths" json:"imgPaths"`   // 故障图片
	Type      int8   `gorm:"column:type" json:"type"`            // 故障类型 1无法充电  2 无法连接 3 设备故障 4 其他

	IsOrder uint8  `gorm:"column:is_order" json:"isOrder"` // 是否为订单异常
	Room    string `gorm:"column:room" json:"room"`        // 房间号

	Status    int8       `gorm:"column:status" json:"status"`        // 故障解决状态 1 等待处理 2 已处理
	Desc      string     `gorm:"column:desc" json:"desc"`            // 故障描述
	PlaceId   int        `gorm:"column:place_id" json:"placeId"`     // 网点ID
	PlaceName string     `gorm:"column:place_name" json:"placeName"` // 网点名称
	ReportDesc string    `gorm:"column:report_desc" json:"reportDesc"` // 网点名称
	CreateAt  dingo.Time `gorm:"column:create_at" json:"createAt"`   // 创建日期
	UpdateAt  dingo.Time `gorm:"column:update_at" json:"updateAt"`   // 修改日期
}

// model init
func New() *ReportsModel {
	return &ReportsModel{}
}

// 订单详情
type ReportDetail struct {
	// 基础信息
	ReportsModel

	PuserName string `json:"puserName"` // 所属代理名称
	NickName  string `json:"nickName"`  // 报修用户名
	// 订单信息
	Money         int64      `json:"money"`       // 订单总金额 - 单位分
	OrderCreateAt dingo.Time `json:"createAt"`    // 订单创建时间
	PayFrom       int8       `json:"payFrom"`     // 支付来源 wwixin zhifubao
	OrderStatus   int8       `json:"orderStatus"` // 商户平台订单状态 1:等待下单2:使用中3:已撤销4:交易失败5:已完成6:支付超时7:待守约10:已删除

	//设备信息
	DeviceModelId  string     `json:"deviceModelId"` // 设备型号
	DeviceName     string     `json:"deviceName"`    // 设备名
	DeviceCreateAt dingo.Time `json:"createAt"`      // 订单创建时间

}

// TableName
func (m *ReportsModel) TableName() string {
	return "devices"
}

func (m *ReportsModel) Mutate(attrs ...ReportAttr) *ReportsModel {
	ReportAttrs(attrs).Apply(m)
	return m
}

// PlaceReportsModel 门店投诉建议
type PlaceReportsModel struct {
	PlaceReportsDb
	CreateTime string `gorm:"column:create_time" json:"createTime"`
	UpdateTime string `gorm:"column:update_time" json:"updateTime"`
}
type PlaceReportsDb struct {
	Id        int    `gorm:"column:id" json:"id"`
	MemberId  int    `gorm:"column:member_id" json:"memberId"`
	PlaceId   int    `gorm:"column:place_id" json:"placeId"`
	DeviceSn  string `gorm:"column:device_sn" json:"deviceSn"`
	ImgPaths  string `gorm:"column:img_paths" json:"imgPaths"`
	Type      uint8  `gorm:"column:type" json:"type"`
	Status    uint8  `gorm:"column:status" json:"status"`
	Room      string `gorm:"column:room" json:"room"`
	PlaceName string `gorm:"column:place_name" json:"placeName"`
	Address   string `gorm:"column:address" json:"address"`
	Desc      string `gorm:"column:desc" json:"desc"`
}

func (m *PlaceReportsDb) TableName() string {
	return "place_reports"
}

type ReportList struct {
	ReportsModel
	ProdType   int `gorm:"column:prod_type" json:"prodType"`
}
